package javaClassExercise.set;

import java.util.*;

/**
 * Created by lomo on 2017/3/14.
 *
 * 遍历获取HashMap集合(Collection)中的数据
 */
public class sortMapTest {

    public static void main(String[] args) {

        SortedMap<String, Integer> sortMap = new TreeMap<>();
        //System.out.println(sortMap.size()); // 0
        sortMap.put("lomo", 10);
        sortMap.put("lomo1", 100);
        sortMap.put("lom2", 88);
        sortMap.put("lomo", 99);
        sortMap.put("lmo", 66);
        System.out.println("srotmap put后的length：" + sortMap.size()); // 4 ，第二个key:lomo覆盖了第一个lomo的值

        /* 使用keyset方式遍历Map中的数据 */
        System.out.println("使用Map.keyset方式遍历Map中的数据 key -> value： ");
        Set<String> set = sortMap.keySet();
        //System.out.println(set.size());  // 4
        for (String str : set) {
            System.out.println(sortMap.get(str));  //遍历取值, 输出：66, 88, 99, 100 [自动排序]
        }


        /* 使用entryset遍历Map中的数据 */
        System.out.println("使用Map.entryset使用iterator方式遍历Map中的数据 key -> value： ");
        Iterator< Map.Entry<String, Integer> > iterator = sortMap.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println("The key: " + entry.getKey() + ", The value: " + entry.getValue());
        }
        //输出：使用entryset也可以自动排序，自动过滤掉了重复的key
        /*
        The key: lmo The value: 66
        The key: lom2 The value: 88
        The key: lomo The value: 99
        The key: lomo1 The value: 100
        */


        /* 第三种: 大容量，推荐；通过Map.entrySet遍历key和value */
        System.out.println("Map.entrySet，通过Map.entrySet遍历key和value: ");
        for (Map.Entry<String, Integer> entry : sortMap.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", And Value = " + entry.getValue());
        }
        //输出:
        /*
        Key = lmo, And Value = 66
        Key = lom2, And Value = 88
        Key = lomo, And Value = 99
        Key = lomo1, And Value = 100
         */


        /* 第四种：Map.values方式 */
        System.out.println("通过Map.values()遍历所有的value，但不能遍历Key!!! ");
        for (int str : sortMap.values()) {
            //只能遍历value，因为sortMap是<String, Integer>类型的集合，value属于Integer类。所以必须使用Integer/int
            System.out.println("Value： " + str);
        }
        //输出：
        /*
        Value： 66
        Value： 88
        Value： 99
        Value： 100
        */


    }
}
